package com.eke.serviceimpl;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import com.eke.bean.Users;
import com.eke.dao.UsersDao;
import com.eke.service.UsersService;
import com.jason.mvc.utils.ApplicationContext;

@Service
public class UsersServiceImpl implements UsersService {

	@Resource
	private UsersDao uDao;

	/**
	 * @param users
	 *            用户对象
	 * @return {@link Boolean}
	 */
	
	public boolean addUser(Users users) {
		if (users != null) {
			// 将密码加盐
			users.setUserPwd(users.getUserName() + users.getUserPwd());
			// 将密码设置为md5密文密码形式
			final String pwd = DigestUtils.md5DigestAsHex(users.getUserPwd().getBytes());
			users.setUserSex(1);
			users.setUserPwd(pwd);
			users.setUserRoleId(1);
			users.setCreateTime(new Timestamp(new Date().getTime()));
			// 添加到数据库
			return uDao.adduser(users) > 0;
		}
		return false;
	}

	/**
	 * 验证用户
	 * 
	 * @param users
	 *            用户对象
	 * @return boolean
	 */
	
	public boolean verUser(Users users) {
		// TODO Auto-generated method stub
		List<Users> lUsers = uDao.qurryUser(users.getUserName());
		if (lUsers.size() > 0) {
			Users user = lUsers.get(0);
			String userPwd = DigestUtils.md5DigestAsHex((users.getUserName() + users.getUserPwd()).getBytes());
			if ((user.getUserName().equals(users.getUserName()) && user.getUserPwd().equals(userPwd)) == true) {
				ApplicationContext.setSession("users.userId", user.getUserId());
				ApplicationContext.getSession().setAttribute("userId", user.getUserId());
				ApplicationContext.setSession("users.userName", user.getUserName());
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}

	/**
	 * 根用户名判断数据库中是已经存在
	 * 
	 * @param users
	 *            用户名
	 * @return {@link Boolean} true --存在 false --不存在
	 */
	
	public boolean isExitUserName(Users users) {
		// TODO Auto-generated method stub
		return uDao.qurryUser(users.getUserName()).size() > 0;
	}

	/**
	 * 根据用户id查询用户信息
	 * 
	 * @param userId
	 *            用户id
	 * @return {@link Users}
	 * 
	 */
	
	public Users queryUserDetails(Integer userId) {
		// TODO Auto-generated method stub
		return uDao.queryUserByUserId(userId);
	}

	/**
	 * 分页查询所有用户
	 * 
	 * @param startRow
	 *            开始页
	 * @param pageSize
	 *            数量
	 * @return {@link List}<{@link Users}> 返回用户集合
	 */
	
	public List<Users> queryAllUsers(int startRow, int pageSize) {
		// TODO Auto-generated method stub
		return uDao.queryAllUser(startRow, pageSize);
	}

	/**
	 * 发布问题减少积分
	 * 
	 * @param need_integral
	 *            所需积分
	 * @param userId
	 *            用户id
	 * @return {@link Boolean}
	 */
	
	public boolean addQuestionUpdateIntegral(Integer user_integral, Integer userId) {
		// TODO Auto-generated method stub
		return uDao.addQuestionUpdateIntegral(user_integral, userId);
	}

	/**
	 * 判断用户是否够积分
	 * 
	 * @param need_integral
	 *            所需积分
	 * @param userId
	 *            用户id
	 * @return {@link Boolean} 积分足够返回true 积分不足返回false
	 */
	
	public boolean isHaveEnoughIntegral(Integer need_integral, Integer userId) {
		// TODO Auto-generated method stub
		Users user = uDao.queryUserIntegral(userId);
		return user.getUserIntegral() >= need_integral;
	}

	/**
	 * 查询所有用户带分页
	 * 
	 * @param userName
	 *            用户名
	 * @param startRow
	 *            开始页
	 * @param pageSize
	 *            数量
	 * @return {@link List}<{@link Users}> 返回用户集合
	 */
	
	public List<Users> queryUsers(String userName, int startRow, int pageSize) {
		// TODO Auto-generated method stub
		return uDao.qurryUser(userName, startRow, pageSize);
	}

	/**
	 * 查询所有用户
	 * 
	 * @param startRow
	 *            开始页
	 * @param pageSize
	 *            数量
	 * @return {@link List}<{@link Users}> 返回用户集合
	 */
	
	public List<Users> queryAllUser(int startRow, int pageSize) {
		// TODO Auto-generated method stub
		return uDao.queryAllUser(startRow, pageSize);
	}

}
